#ifndef MODULE_MANAGER_h
#define MODULE_MANAGER_h

#include "MxBase/E2eInfer/ImageProcessor/ImageProcessor.h"
#include "MxBase/E2eInfer/VideoDecoder/VideoDecoder.h"
#include "MxBase/E2eInfer/VideoEncoder/VideoEncoder.h"
#include "MxBase/E2eInfer/DataType.h"

#include "MxBase/MxBase.h"
#include "MxBase/Log/Log.h"

#include "Module/Module.h"
using namespace MxBase;


class ModuleManager  {
public:
    static ModuleManager& GetInstance();
    APP_ERROR Start(const std::vector< std::shared_ptr<Module>> &modules);
    APP_ERROR Stop();
private:
    ModuleManager() = default;
    ~ModuleManager() = default;
    std::vector<std::shared_ptr<Module>> modules_ = {};
    std::vector<std::thread> runThreads_ = {};
};

#endif